package com.kbs.im.common.protocol.serialize;

import com.kbs.im.common.protocol.serialize.impl.JSONSerializer;

/**
 * 序列化实现接口
 *
 * @author zhangzhang
 */
public interface Serializer {

    Serializer DEFAULT = new JSONSerializer();

    /**
     * 序列化算法
     *
     * @return 算法标号标识
     */
    byte getSerializerAlgorithm();

    /**
     * java 对象转换成二进制
     *
     * @param object 任意对象
     * @return json字节数组
     */
    byte[] serialize(Object object);

    /**
     * 二进制转换成 java 对象
     *
     * @param clazz 对象类型字节码
     * @param bytes 字节数组
     * @param <T>   参数对象类型
     * @return 返回 T 类型的对象
     */
    <T> T deserialize(Class<T> clazz, byte[] bytes);

}
